iT邦幫忙

0

Day 28|Discord × Google Calendar Bot:使用 GitHub Actions 建立 CI 自動化測試

  • 分享至 

  • xImage
  •  

一、實作目標

前面的開發已經完成 Discord Bot 的行程新增、查詢、刪除與 Google Calendar 原生提醒功能,並建立了 111 項自動化測試。

雖然可以透過本機執行 npm test 驗證程式,但每次修改程式碼都需要手動執行測試,容易因為忘記檢查而忽略問題。

因此,Day 28 的目標是導入 GitHub Actions,建立 CI(Continuous Integration,持續整合)流程,讓程式碼 Push 到 GitHub 後,能自動安裝依賴套件並執行測試。

本次實作重點:

  1. 建立 GitHub Repository
  2. 使用 Git 將本機專案上傳至 GitHub
  3. 設定 GitHub Actions Workflow
  4. 自動安裝 Node.js 與專案依賴套件
  5. 自動執行既有的 111 項測試
  6. 透過 GitHub Actions 確認測試結果

二、實作過程

1. 建立 GitHub Repository

首先在 GitHub 建立新的 Private Repository,並將本機 Discord Bot 專案納入 Git 版本控制。

透過以下指令建立版本紀錄並上傳程式碼:

git init -b main
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/ug696/discord-calendarBot.git
git push -u origin main

其中 git add 負責將檔案加入暫存區,git commit 建立本機版本紀錄,最後透過 git push 將程式碼上傳至 GitHub。

上傳前也確認 .gitignore 已排除 .env、OAuth 憑證、Token 及 node_modules 等不應提交的檔案。

2. 設定 GitHub Actions

接著使用專案中的 .github/workflows/test.yml 設定自動化工作流程。

name: Node.js Tests

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: read

jobs:
  test:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v6
      - name: Set up Node.js
        uses: actions/setup-node@v7
        with:
          node-version: '26.4.0'
          cache: npm
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

這份設定主要包含以下功能:

  1. push:當程式碼推送至 main 分支時,自動觸發測試
  2. pull_request:當 Pull Request 以 main 為目標分支時,執行測試
  3. workflow_dispatch:允許手動啟動工作流程
  4. runs-on:使用 GitHub 提供的 Ubuntu 執行環境
  5. actions/checkout:取得 Repository 中的程式碼
  6. actions/setup-node:設定 Node.js 執行環境
  7. npm ci:依照鎖定檔安裝專案依賴套件
  8. npm test:執行專案既有的自動化測試

透過這個設定,就能在程式碼更新後,自動驗證原本已完成的功能是否符合測試預期。

3. 執行 GitHub Actions 自動化測試

完成 Repository 建立及 Workflow 設定後,將程式碼 Push 至 GitHub。

GitHub Actions 成功偵測 main 分支的更新,並自動啟動 Node.js Tests 工作流程。

執行過程包含:

  1. 取得 Repository 程式碼
  2. 設定 Node.js 26.4.0
  3. 安裝 npm 依賴套件
  4. 執行 111 項自動化測試
  5. 回傳測試結果

進入 GitHub Repository 的 Actions 分頁後,可以查看每個步驟的執行狀態及詳細紀錄。

本次測試結果:

  • Tests:111
  • Passed:111
  • Failed:0
  • Skipped:0
  • Cancelled:0
  • GitHub Actions Job:成功
  • 整體工作執行時間:約 29 秒

https://ithelp.ithome.com.tw/upload/images/20261018/20184393Q7dYKX0EVk.png

首次 Push 後,GitHub Actions 自動執行 Node.js 測試,111 項測試全部通過、0 項失敗,確認 CI 工作流程成功運作。

三、測試與驗收

本次成功將原本只能在本機手動執行的測試,整合至 GitHub Actions。

透過 Git Push 觸發自動化工作流程,讓 GitHub 在獨立的執行環境中安裝套件並執行相同的測試。

測試結果顯示全部 111 項測試通過,確認 CI 設定能正常運作。

不過,CI 測試成功代表目前設定的自動化測試皆符合預期,並不代表已完成正式部署,或所有功能都經過真實 Discord 與 Google Calendar 環境驗證。

四、學習心得

這次實作讓我更清楚理解 Git、GitHub 與 GitHub Actions 之間的關係。Git 負責管理本機程式碼的版本,GitHub 提供遠端程式碼儲存庫,而 GitHub Actions 則能在程式碼更新後,自動執行指定的工作流程。透過 CI 的建立,不需要每次修改程式碼都依賴手動執行完整測試,也能在後續開發中更早發現可能影響既有功能的問題。


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言